Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow for custom struct tags such as json. #1018

Open
wants to merge 1 commit into
base: v3
Choose a base branch
from

Conversation

naquin
Copy link

@naquin naquin commented Feb 8, 2024

This is useful when using structs from 3rd-party packages which almost certainly only have json tags and not yaml tags.

This implementation does not change the default behavior for only looking for yaml tags, but allows the user to specify a list of tags to consider such as []string{"yaml", "json"} in an encoder or decoder.

This is useful when using structs from 3rd-party packages which almost certainly only have `json` tags and not `yaml` tags.

This implementation does not change the default behavior for only looking for `yaml` tags, but allows the user to specify a list of tags to consider such as []string{"yaml", "json"} in an encoder or decoder.
@dolmen
Copy link

dolmen commented Feb 21, 2024

The default naming for keys which have no struct tags at all is different between gopkg.in/yaml.v3 and encoding/json: encoding/json use lower case while yaml.v3 keeps the original case. Here is an example: https://go.dev/play/p/L-oDNQ3nd9G

So I think that handling json struct tag will be the universal solution that you expect. It will only bring different breaking changes in serialization and more headaches for developers.

@zcc0077
Copy link

zcc0077 commented Dec 18, 2024

The default naming for keys which have no struct tags at all is different between gopkg.in/yaml.v3 and encoding/json: encoding/json use lower case while yaml.v3 keeps the original case. Here is an example: https://go.dev/play/p/L-oDNQ3nd9G

So I think that handling json struct tag will be the universal solution that you expect. It will only bring different breaking changes in serialization and more headaches for developers.

yes, the behavior is little different, for example, json:"Abc" can parse "abc" in json file without error by encoding/json but fail in gopkg.in/yaml.v3 (empty string as result instead)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants